# 导包
import logging.handlers

def init_log_config(filename, when='midnight', interval=1, backup_count=7):
    """
    功能：初始化日志配置函数
    :param filename: 日志文件名
    :param when: 设定日志切分的间隔时间单位
    :param interval: 间隔时间单位的个数
    :param backup_count: 保留日志文件的个数
    :return: None
    """

    # 创建日志器对象
    logger = logging.getLogger()

    # 设置日志打印级别: DEBUG / INFO / WARNING / ERROR / CRITICAL
    logger.setLevel(logging.INFO)

    # 创建输出到控制台的处理器对象
    stream_handler = logging.StreamHandler()

    # 创建输出到日志文件的处理器对象
    # TimedRotatingFileHandler("文件名", when="日志切分间隔时间的单位", interval=间隔时间单位的个数, backupCount=保留日志文件的个数)
    file_handler = logging.handlers.TimedRotatingFileHandler(filename, when,
                                                            interval, backup_count, "utf-8")

    # 创建日志信息格式
    # Formatter("%(日志信息产生的时间)s %(日志信息实际打印的级别)s [%(文件名)s(%(函数名/模块名)s:%(行号)d)] - %(日志信息)s")
    formatter = logging.Formatter("%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s")

    # 控制台处理器设置日志信息格式
    stream_handler.setFormatter(formatter)

    # 日志文件处理器设置日志信息格式
    file_handler.setFormatter(formatter)

    # 日志器对象添加控制台处理器
    logger.addHandler(stream_handler)

    # 日志器对象添加日志文件处理器
    logger.addHandler(file_handler)



if __name__ == '__main__':
    # 初始化日志
    init_log_config("a.log")

    # 打印输出日志信息
    logging.debug("debug级别的日志")

